package pl.edu.pk.psb.bc.dao;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import pl.edu.pk.psb.bc.bo.CenaBo;
import pl.edu.pk.psb.bc.ds.OdlegloscDs;
import pl.edu.pk.psb.bc.ds.PrzystanekDs;

@Repository
public class OdlegloscDaoImpl extends GenericDaoImpl<OdlegloscDs> implements OdlegloscDao{

	@Autowired
	private SessionFactory sessionFactory;
		
	public OdlegloscDaoImpl() {
		super(OdlegloscDs.class);
	}

	@Override
	public void zapisz(Set<OdlegloscDs> listaOdleglosci) {
			if(listaOdleglosci.size()>0){
				for(OdlegloscDs odl: listaOdleglosci)
					super.zapisz(odl);
			}
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<OdlegloscDs> pobierzPowiazanePrzystanki(int id) {
		String query = "from OdlegloscDs as odl where odl.przystanekPocz.id=" + id + "or odl.przystanekKonc.id=" + id;
		Query q = sessionFactory.getCurrentSession().createQuery(query);
		Set<OdlegloscDs> set = new HashSet<OdlegloscDs>(q.list());
		for(OdlegloscDs ds: set){
			if(ds.getPrzystanekKonc().getId()==id){
				PrzystanekDs temp = new PrzystanekDs();
				PrzystanekDs p = ds.getPrzystanekPocz();
				temp.setId(p.getId());
				temp.setIdMiasta(p.getIdMiasta());
				temp.setNazwa(p.getNazwa());
				temp.setRodzajPrzystanku(p.getRodzajPrzystanku());
				ds.setPrzystanekPocz(ds.getPrzystanekKonc());
				ds.setPrzystanekKonc(temp);
			}
		}
		return new ArrayList<OdlegloscDs>(set);
	}
}
